From 59d6ecfae32128162ee6da26d4b1a673be346f0a Mon Sep 17 00:00:00 2001 From: robertl Date: Thu, 30 Jun 2005 17:10:04 +0000 Subject: [PATCH] Read fix type from cetus. Read and write DOP and sat. --- cetus.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/cetus.c b/cetus.c index 6b09650d0..25808aff4 100644 --- a/cetus.c +++ b/cetus.c @@ -164,6 +164,7 @@ data_read(void) for(pdb_rec = pdb->rec_index.rec; pdb_rec; pdb_rec=pdb_rec->next) { waypoint *wpt_tmp; + int i; wpt_tmp = waypt_new(); @@ -177,6 +178,23 @@ data_read(void) wpt_tmp->longitude = be_read32(&rec->longitude) / 10000000.0; wpt_tmp->latitude = be_read32(&rec->latitude) / 10000000.0; + + if (rec->sat != 0xff) + wpt_tmp->sat = rec->sat; + + i = be_read16(&rec->pdop); + if (i != 0xffff) wpt_tmp->pdop = i / 100.0; + i = be_read16(&rec->hdop); + if (i != 0xffff) wpt_tmp->hdop = i / 100.0; + i = be_read16(&rec->vdop); + if (i != 0xffff) wpt_tmp->vdop = i / 100.0; + + switch (rec->type) { + case WptGPS2D: wpt_tmp->fix = fix_2d; break; + case WptGPS3D: wpt_tmp->fix = fix_3d; break; + case WptDGPS2D: wpt_tmp->fix = fix_dgps; break; + case WptDGPS3D: wpt_tmp->fix = fix_dgps; break; + } if (be_read16(&rec->year) != 0xff) { struct tm tm; @@ -247,9 +265,9 @@ cetus_writewpt(const waypoint *wpt) be_write32(&rec->elevation, (unsigned int) (wpt->altitude * 100.0)); } - be_write16( &rec->pdop, 0xffff ); - be_write16( &rec->hdop, 0xffff ); - be_write16( &rec->vdop, 0xffff ); + be_write16( &rec->pdop, wpt->pdop ? wpt->pdop * 100 : 0xffff ); + be_write16( &rec->hdop, wpt->hdop ? wpt->hdop * 100 : 0xffff ); + be_write16( &rec->vdop, wpt->vdop ? wpt->vdop * 100 : 0xffff ); be_write16( &rec->dgpstime, 0xffff ); be_write32( &rec->distance, 0xffffffff ); @@ -260,7 +278,7 @@ cetus_writewpt(const waypoint *wpt) rec->vmon = 0xff; be_write16(&rec->vyear, 0xff); - rec->sat = 0xff; + rec->sat = wpt->sat ? wpt->sat : 0xff; vdata = (char *)rec + sizeof(*rec); if ( wpt->shortname ) { -- 2.30.2